home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1994 / MacHack 1994.toast / MacHack™ 1987-1994 / MacHack™ '90 / Source Code ƒ.sea / Source Code ƒ / C++ Files / HString.c next >
MacBinary  |  1990-05-14  |  9.3 KB  |  [TEXT/QED1]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Mon May 14 18:07:05 1990, modified Mon May 14 18:07:05 1990, creator 'QED1', type ASCII, 8816 bytes "HString.c" , at 0x22f0 406 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[QED1]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 09 48 53 74 72 69 6e | 67 2e 63 00 00 00 00 00 |..HStrin|g.c.....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 51 45 44 | 31 01 00 00 00 00 00 00 |.TEXTQED|1.......|
|00000050| 00 00 00 00 00 22 70 00 | 00 01 96 a2 74 dc 89 a2 |....."p.|....t...|
|00000060| 74 dc 89 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |t.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 90 e7 00 00 |........|........|
|00000080| 2f 2f 20 43 6f 70 79 72 | 69 67 68 74 20 31 39 39 |// Copyr|ight 199|
|00000090| 30 20 57 61 6c 64 65 6d | 61 72 20 48 6f 72 77 61 |0 Waldem|ar Horwa|
|000000a0| 74 2e 0d 2f 2f 20 50 65 | 72 6d 69 73 73 69 6f 6e |t..// Pe|rmission|
|000000b0| 20 69 73 20 67 72 61 6e | 74 65 64 20 66 6f 72 20 | is gran|ted for |
|000000c0| 6e 6f 6e 63 6f 6d 6d 65 | 72 63 69 61 6c 20 75 73 |noncomme|rcial us|
|000000d0| 65 20 6f 66 20 74 68 69 | 73 20 63 6f 64 65 2e 0d |e of thi|s code..|
|000000e0| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 54 79 70 65 73 |.#includ|e <Types|
|000000f0| 2e 68 3e 0d 23 69 6e 63 | 6c 75 64 65 20 3c 4d 65 |.h>.#inc|lude <Me|
|00000100| 6d 6f 72 79 2e 68 3e 0d | 23 69 6e 63 6c 75 64 65 |mory.h>.|#include|
|00000110| 20 3c 4f 53 55 74 69 6c | 73 2e 68 3e 0d 23 69 6e | <OSUtil|s.h>.#in|
|00000120| 63 6c 75 64 65 20 3c 53 | 74 72 69 6e 67 2e 68 3e |clude <S|tring.h>|
|00000130| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 45 72 72 6f 72 |.#includ|e <Error|
|00000140| 73 2e 68 3e 0d 23 69 6e | 63 6c 75 64 65 20 22 48 |s.h>.#in|clude "H|
|00000150| 53 74 72 69 6e 67 2e 68 | 22 0d 0d 0d 4f 53 45 72 |String.h|"...OSEr|
|00000160| 72 20 53 74 72 69 6e 67 | 3a 3a 65 72 72 3d 30 3b |r String|::err=0;|
|00000170| 0d 0d 2f 2a d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |../*....|........|
|00000180| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000190| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000001a0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000001b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000001c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 2a 2f 0d 2f 2a 20 |........|..*/./* |
|000001d0| 43 6f 70 79 20 73 72 63 | 20 74 6f 20 74 68 69 73 |Copy src| to this|
|000001e0| 20 77 69 74 68 6f 75 74 | 20 64 65 61 6c 6c 6f 63 | without| dealloc|
|000001f0| 61 74 69 6e 67 20 77 68 | 61 74 65 76 65 72 20 77 |ating wh|atever w|
|00000200| 61 73 20 69 6e 20 74 68 | 69 73 20 70 72 65 76 69 |as in th|is previ|
|00000210| 6f 75 73 6c 79 2e 09 09 | 2a 2f 0d 2f 2a d1 d1 d1 |ously...|*/./*...|
|00000220| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000230| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000240| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000250| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000260| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000270| d1 d1 d1 2a 2f 0d 76 6f | 69 64 20 53 74 72 69 6e |...*/.vo|id Strin|
|00000280| 67 3a 3a 69 6e 74 65 72 | 6e 61 6c 43 6f 70 79 28 |g::inter|nalCopy(|
|00000290| 63 6f 6e 73 74 20 53 74 | 72 69 6e 67 20 26 73 72 |const St|ring &sr|
|000002a0| 63 29 0d 20 20 7b 0d 20 | 20 69 66 20 28 64 61 74 |c). {. | if (dat|
|000002b0| 61 3d 73 72 63 2e 64 61 | 74 61 29 20 64 61 74 61 |a=src.da|ta) data|
|000002c0| 2d 3e 72 65 66 43 6f 75 | 6e 74 2b 2b 3b 0d 20 20 |->refCou|nt++;. |
|000002d0| 7d 0d 0d 0d 2f 2a d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |}.../*..|........|
|000002e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000002f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000300| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000310| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000320| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 2a 2f 0d 2f |........|....*/./|
|00000330| 2a 20 43 6f 70 79 20 63 | 53 74 72 69 6e 67 20 74 |* Copy c|String t|
|00000340| 6f 20 74 68 69 73 20 77 | 69 74 68 6f 75 74 20 64 |o this w|ithout d|
|00000350| 65 61 6c 6c 6f 63 61 74 | 69 6e 67 20 77 68 61 74 |eallocat|ing what|
|00000360| 65 76 65 72 20 77 61 73 | 20 69 6e 20 74 68 69 73 |ever was| in this|
|00000370| 20 70 72 65 76 69 6f 75 | 73 6c 79 2e 09 09 2a 2f | previou|sly...*/|
|00000380| 0d 2f 2a d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |./*.....|........|
|00000390| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000003a0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000003b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000003c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000003d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 2a 2f 0d 4f 53 45 72 |........|.*/.OSEr|
|000003e0| 72 20 53 74 72 69 6e 67 | 3a 3a 69 6e 74 65 72 6e |r String|::intern|
|000003f0| 61 6c 43 6f 70 79 28 63 | 6f 6e 73 74 20 63 68 61 |alCopy(c|onst cha|
|00000400| 72 20 2a 63 53 74 72 69 | 6e 67 29 0d 20 20 7b 0d |r *cStri|ng). {.|
|00000410| 20 20 69 6e 74 20 6c 65 | 6e 67 74 68 3d 73 74 72 | int le|ngth=str|
|00000420| 6c 65 6e 28 63 53 74 72 | 69 6e 67 29 3b 0d 0d 20 |len(cStr|ing);.. |
|00000430| 20 69 66 20 28 64 61 74 | 61 3d 28 53 74 72 69 6e | if (dat|a=(Strin|
|00000440| 67 44 61 74 61 20 2a 29 | 4e 65 77 48 61 6e 64 6c |gData *)|NewHandl|
|00000450| 65 28 6c 65 6e 67 74 68 | 2b 35 29 29 0d 20 20 20 |e(length|+5)). |
|00000460| 20 7b 0d 20 20 20 20 64 | 61 74 61 2d 3e 72 65 66 | {. d|ata->ref|
|00000470| 43 6f 75 6e 74 3d 31 3b | 0d 20 20 20 20 42 6c 6f |Count=1;|. Blo|
|00000480| 63 6b 4d 6f 76 65 28 50 | 74 72 28 63 53 74 72 69 |ckMove(P|tr(cStri|
|00000490| 6e 67 29 2c 64 61 74 61 | 2d 3e 73 74 72 2c 6c 65 |ng),data|->str,le|
|000004a0| 6e 67 74 68 2b 31 29 3b | 0d 20 20 20 20 72 65 74 |ngth+1);|. ret|
|000004b0| 75 72 6e 20 30 3b 0d 20 | 20 20 20 7d 0d 20 20 72 |urn 0;. | }. r|
|000004c0| 65 74 75 72 6e 20 53 74 | 72 69 6e 67 3a 3a 65 72 |eturn St|ring::er|
|000004d0| 72 3d 6d 65 6d 46 75 6c | 6c 45 72 72 3b 0d 20 20 |r=memFul|lErr;. |
|000004e0| 7d 0d 0d 0d 2f 2a d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |}.../*..|........|
|000004f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000500| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000510| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000520| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000530| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 2a 2f 0d 2f |........|....*/./|
|00000540| 2a 20 4d 61 6b 65 20 73 | 75 72 65 20 74 68 61 74 |* Make s|ure that|
|00000550| 20 74 68 69 73 20 53 74 | 72 69 6e 67 27 73 20 64 | this St|ring's d|
|00000560| 61 74 61 20 69 73 20 6e | 6f 74 20 73 68 61 72 65 |ata is n|ot share|
|00000570| 64 20 77 69 74 68 20 61 | 6e 79 20 6f 74 68 65 72 |d with a|ny other|
|00000580| 20 53 74 72 69 6e 67 2e | 20 20 54 68 69 73 09 09 | String.| This..|
|00000590| 2a 2f 0d 2f 2a 20 66 75 | 6e 63 74 69 6f 6e 20 73 |*/./* fu|nction s|
|000005a0| 68 6f 75 6c 64 20 62 65 | 20 63 61 6c 6c 65 64 20 |hould be| called |
|000005b0| 62 65 66 6f 72 65 20 74 | 68 69 73 20 53 74 72 69 |before t|his Stri|
|000005c0| 6e 67 27 73 20 64 61 74 | 61 20 69 73 20 61 6c 74 |ng's dat|a is alt|
|000005d0| 65 72 65 64 2e 09 09 09 | 2a 2f 0d 2f 2a d1 d1 d1 |ered....|*/./*...|
|000005e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000005f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000600| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000610| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000620| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000630| d1 d1 d1 2a 2f 0d 4f 53 | 45 72 72 20 53 74 72 69 |...*/.OS|Err Stri|
|00000640| 6e 67 3a 3a 66 72 65 73 | 68 28 29 0d 20 20 7b 0d |ng::fres|h(). {.|
|00000650| 20 20 4f 53 45 72 72 20 | 65 72 72 3b 0d 0d 20 20 | OSErr |err;.. |
|00000660| 69 66 20 28 21 64 61 74 | 61 20 7c 7c 20 64 61 74 |if (!dat|a || dat|
|00000670| 61 2d 3e 72 65 66 43 6f | 75 6e 74 3c 3d 31 29 20 |a->refCo|unt<=1) |
|00000680| 72 65 74 75 72 6e 20 30 | 3b 0d 20 20 53 74 72 69 |return 0|;. Stri|
|00000690| 6e 67 44 61 74 61 20 2a | 64 61 74 61 32 3d 64 61 |ngData *|data2=da|
|000006a0| 74 61 3b 0d 20 20 69 66 | 20 28 65 72 72 3d 48 61 |ta;. if| (err=Ha|
|000006b0| 6e 64 54 6f 48 61 6e 64 | 28 28 48 61 6e 64 6c 65 |ndToHand|((Handle|
|000006c0| 20 2a 29 26 64 61 74 61 | 32 29 29 20 72 65 74 75 | *)&data|2)) retu|
|000006d0| 72 6e 20 53 74 72 69 6e | 67 3a 3a 65 72 72 3d 65 |rn Strin|g::err=e|
|000006e0| 72 72 3b 0d 20 20 64 61 | 74 61 2d 3e 72 65 66 43 |rr;. da|ta->refC|
|000006f0| 6f 75 6e 74 2d 2d 3b 0d | 20 20 64 61 74 61 32 2d |ount--;.| data2-|
|00000700| 3e 72 65 66 43 6f 75 6e | 74 3d 31 3b 0d 20 20 64 |>refCoun|t=1;. d|
|00000710| 61 74 61 3d 64 61 74 61 | 32 3b 0d 20 20 72 65 74 |ata=data|2;. ret|
|00000720| 75 72 6e 20 30 3b 0d 20 | 20 7d 0d 0d 0d 2f 2a d1 |urn 0;. | }.../*.|
|00000730| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000740| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000750| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000760| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000770| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000780| d1 d1 d1 d1 d1 2a 2f 0d | 2f 2a 20 44 65 61 6c 6c |.....*/.|/* Deall|
|00000790| 6f 63 61 74 65 20 74 68 | 69 73 20 53 74 72 69 6e |ocate th|is Strin|
|000007a0| 67 2e 20 20 44 65 61 6c | 6c 6f 63 61 74 65 20 74 |g. Deal|locate t|
|000007b0| 68 65 20 64 61 74 61 20 | 74 6f 6f 20 69 66 20 69 |he data |too if i|
|000007c0| 74 73 20 72 65 66 65 72 | 65 6e 63 65 20 63 6f 75 |ts refer|ence cou|
|000007d0| 6e 74 20 72 65 61 63 68 | 65 73 09 2a 2f 0d 2f 2a |nt reach|es.*/./*|
|000007e0| 20 7a 65 72 6f 2e 09 09 | 09 09 09 09 09 09 09 09 | zero...|........|
|000007f0| 2a 2f 0d 2f 2a d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |*/./*...|........|
|00000800| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000810| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000820| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000830| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000840| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 2a 2f 0d 53 74 |........|...*/.St|
|00000850| 72 69 6e 67 3a 3a 7e 53 | 74 72 69 6e 67 28 29 0d |ring::~S|tring().|
|00000860| 20 20 7b 0d 20 20 69 66 | 20 28 64 61 74 61 20 26 | {. if| (data &|
|00000870| 26 20 21 28 2d 2d 64 61 | 74 61 2d 3e 72 65 66 43 |& !(--da|ta->refC|
|00000880| 6f 75 6e 74 29 29 0d 20 | 20 20 20 44 69 73 70 6f |ount)). | Dispo|
|00000890| 73 48 61 6e 64 6c 65 28 | 48 61 6e 64 6c 65 28 64 |sHandle(|Handle(d|
|000008a0| 61 74 61 29 29 3b 0d 20 | 20 7d 0d 0d 0d 2f 2a d1 |ata));. | }.../*.|
|000008b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000008c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000008d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000008e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000008f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000900| d1 d1 d1 d1 d1 2a 2f 0d | 2f 2a 20 43 6c 65 61 72 |.....*/.|/* Clear|
|00000910| 20 74 68 69 73 20 53 74 | 72 69 6e 67 20 74 6f 20 | this St|ring to |
|00000920| 61 20 6e 75 6c 6c 20 73 | 74 72 69 6e 67 2e 09 09 |a null s|tring...|
|00000930| 09 09 09 09 09 2a 2f 0d | 2f 2a d1 d1 d1 d1 d1 d1 |.....*/.|/*......|
|00000940| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000950| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000960| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000970| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000980| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000990| 2a 2f 0d 76 6f 69 64 20 | 53 74 72 69 6e 67 3a 3a |*/.void |String::|
|000009a0| 63 6c 65 61 72 28 29 0d | 20 20 7b 0d 20 20 74 68 |clear().| {. th|
|000009b0| 69 73 2d 3e 53 74 72 69 | 6e 67 3a 3a 7e 53 74 72 |is->Stri|ng::~Str|
|000009c0| 69 6e 67 28 29 3b 0d 20 | 20 64 61 74 61 3d 30 3b |ing();. | data=0;|
|000009d0| 0d 20 20 7d 0d 0d 0d 2f | 2a d1 d1 d1 d1 d1 d1 d1 |. }.../|*.......|
|000009e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000009f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000a00| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000a10| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000a20| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 2a |........|.......*|
|00000a30| 2f 0d 2f 2a 20 41 73 73 | 69 67 6e 20 73 72 63 20 |/./* Ass|ign src |
|00000a40| 74 6f 20 74 68 69 73 2e | 20 20 44 65 61 6c 6c 6f |to this.| Deallo|
|00000a50| 63 61 74 65 20 74 68 65 | 20 6f 6c 64 20 53 74 72 |cate the| old Str|
|00000a60| 69 6e 67 20 69 6e 20 74 | 68 69 73 2e 09 09 09 09 |ing in t|his.....|
|00000a70| 2a 2f 0d 2f 2a d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |*/./*...|........|
|00000a80| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000a90| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000aa0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000ab0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000ac0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 2a 2f 0d 53 74 |........|...*/.St|
|00000ad0| 72 69 6e 67 20 26 53 74 | 72 69 6e 67 3a 3a 6f 70 |ring &St|ring::op|
|00000ae0| 65 72 61 74 6f 72 3d 28 | 63 6f 6e 73 74 20 53 74 |erator=(|const St|
|00000af0| 72 69 6e 67 20 26 73 72 | 63 29 0d 20 20 7b 0d 20 |ring &sr|c). {. |
|00000b00| 20 69 66 20 28 74 68 69 | 73 21 3d 26 73 72 63 29 | if (thi|s!=&src)|
|00000b10| 20 2f 2f 48 61 6e 64 6c | 65 20 61 20 53 74 72 69 | //Handl|e a Stri|
|00000b20| 6e 67 20 61 73 73 69 67 | 6e 65 64 20 74 6f 20 69 |ng assig|ned to i|
|00000b30| 74 73 65 6c 66 20 63 6f | 72 72 65 63 74 6c 79 21 |tself co|rrectly!|
|00000b40| 0d 20 20 20 20 7b 0d 20 | 20 20 20 74 68 69 73 2d |. {. | this-|
|00000b50| 3e 53 74 72 69 6e 67 3a | 3a 7e 53 74 72 69 6e 67 |>String:|:~String|
|00000b60| 28 29 3b 0d 20 20 20 20 | 69 6e 74 65 72 6e 61 6c |();. |internal|
|00000b70| 43 6f 70 79 28 73 72 63 | 29 3b 0d 20 20 20 20 7d |Copy(src|);. }|
|00000b80| 0d 20 20 72 65 74 75 72 | 6e 20 2a 74 68 69 73 3b |. retur|n *this;|
|00000b90| 0d 20 20 7d 0d 0d 0d 2f | 2a d1 d1 d1 d1 d1 d1 d1 |. }.../|*.......|
|00000ba0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000bb0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000bc0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000bd0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000be0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 2a |........|.......*|
|00000bf0| 2f 0d 2f 2a 20 41 73 73 | 69 67 6e 20 74 68 65 20 |/./* Ass|ign the |
|00000c00| 63 53 74 72 69 6e 67 20 | 74 6f 20 74 68 69 73 2e |cString |to this.|
|00000c10| 20 20 44 65 61 6c 6c 6f | 63 61 74 65 20 74 68 65 | Deallo|cate the|
|00000c20| 20 6f 6c 64 20 53 74 72 | 69 6e 67 20 69 6e 20 74 | old Str|ing in t|
|00000c30| 68 69 73 2e 09 09 09 2a | 2f 0d 2f 2a d1 d1 d1 d1 |his....*|/./*....|
|00000c40| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000c50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000c60| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000c70| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000c80| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000c90| d1 d1 2a 2f 0d 4f 53 45 | 72 72 20 53 74 72 69 6e |..*/.OSE|rr Strin|
|00000ca0| 67 3a 3a 6f 70 65 72 61 | 74 6f 72 3d 28 63 6f 6e |g::opera|tor=(con|
|00000cb0| 73 74 20 63 68 61 72 20 | 2a 63 53 74 72 69 6e 67 |st char |*cString|
|00000cc0| 29 0d 20 20 7b 0d 20 20 | 74 68 69 73 2d 3e 53 74 |). {. |this->St|
|00000cd0| 72 69 6e 67 3a 3a 7e 53 | 74 72 69 6e 67 28 29 3b |ring::~S|tring();|
|00000ce0| 0d 20 20 72 65 74 75 72 | 6e 20 69 6e 74 65 72 6e |. retur|n intern|
|00000cf0| 61 6c 43 6f 70 79 28 63 | 53 74 72 69 6e 67 29 3b |alCopy(c|String);|
|00000d00| 0d 20 20 7d 0d 0d 0d 2f | 2a d1 d1 d1 d1 d1 d1 d1 |. }.../|*.......|
|00000d10| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000d20| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000d30| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000d40| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000d50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 2a |........|.......*|
|00000d60| 2f 0d 2f 2a 20 52 65 74 | 75 72 6e 20 74 68 65 20 |/./* Ret|urn the |
|00000d70| 6c 65 6e 67 74 68 20 6f | 66 20 74 68 69 73 20 53 |length o|f this S|
|00000d80| 74 72 69 6e 67 2e 09 09 | 09 09 09 09 09 2a 2f 0d |tring...|.....*/.|
|00000d90| 2f 2a d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |/*......|........|
|00000da0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000db0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000dc0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000dd0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000de0| d1 d1 d1 d1 d1 d1 d1 d1 | 2a 2f 0d 69 6e 74 20 53 |........|*/.int S|
|00000df0| 74 72 69 6e 67 3a 3a 6c | 65 6e 67 74 68 28 29 20 |tring::l|ength() |
|00000e00| 63 6f 6e 73 74 0d 20 20 | 7b 0d 20 20 69 66 20 28 |const. |{. if (|
|00000e10| 21 64 61 74 61 29 20 72 | 65 74 75 72 6e 20 30 3b |!data) r|eturn 0;|
|00000e20| 0d 20 20 72 65 74 75 72 | 6e 20 73 74 72 6c 65 6e |. retur|n strlen|
|00000e30| 28 64 61 74 61 2d 3e 73 | 74 72 29 3b 0d 20 20 7d |(data->s|tr);. }|
|00000e40| 0d 0d 0d 2f 2a d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |.../*...|........|
|00000e50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000e60| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000e70| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000e80| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000e90| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 2a 2f 0d 2f 2a |........|...*/./*|
|00000ea0| 20 52 65 74 75 72 6e 20 | 74 68 65 20 63 68 61 72 | Return |the char|
|00000eb0| 61 63 74 65 72 20 61 74 | 20 70 6f 73 69 74 69 6f |acter at| positio|
|00000ec0| 6e 20 69 6e 64 65 78 20 | 69 6e 20 74 68 69 73 20 |n index |in this |
|00000ed0| 53 74 72 69 6e 67 2e 20 | 20 52 65 74 75 72 6e 20 |String. | Return |
|00000ee0| 74 68 65 20 6e 75 6c 6c | 20 63 68 61 72 61 63 74 |the null| charact|
|00000ef0| 65 72 20 69 66 09 2a 2f | 0d 2f 2a 20 69 6e 64 65 |er if.*/|./* inde|
|00000f00| 78 20 69 73 20 6f 75 74 | 20 6f 66 20 62 6f 75 6e |x is out| of boun|
|00000f10| 64 73 2e 09 09 09 09 09 | 09 09 09 2a 2f 0d 2f 2a |ds......|...*/./*|
|00000f20| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000f30| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000f40| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000f50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000f60| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00000f70| d1 d1 d1 d1 d1 d1 2a 2f | 0d 63 68 61 72 20 53 74 |......*/|.char St|
|00000f80| 72 69 6e 67 3a 3a 6f 70 | 65 72 61 74 6f 72 5b 5d |ring::op|erator[]|
|00000f90| 28 69 6e 74 20 69 6e 64 | 65 78 29 20 63 6f 6e 73 |(int ind|ex) cons|
|00000fa0| 74 0d 20 20 7b 0d 20 20 | 69 66 20 28 21 64 61 74 |t. {. |if (!dat|
|00000fb0| 61 20 7c 7c 20 69 6e 64 | 65 78 3c 30 20 7c 7c 20 |a || ind|ex<0 || |
|00000fc0| 69 6e 64 65 78 3e 3d 73 | 74 72 6c 65 6e 28 64 61 |index>=s|trlen(da|
|00000fd0| 74 61 2d 3e 73 74 72 29 | 29 20 72 65 74 75 72 6e |ta->str)|) return|
|00000fe0| 20 30 3b 0d 20 20 72 65 | 74 75 72 6e 20 64 61 74 | 0;. re|turn dat|
|00000ff0| 61 2d 3e 73 74 72 5b 69 | 6e 64 65 78 5d 3b 0d 20 |a->str[i|ndex];. |
|00001000| 20 7d 0d 0d 0d 2f 2a d1 | d1 d1 d1 d1 d1 d1 d1 d1 | }.../*.|........|
|00001010| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001020| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001030| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001040| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001050| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 2a 2f 0d |........|.....*/.|
|00001060| 2f 2a 20 52 65 74 75 72 | 6e 20 74 68 65 20 73 75 |/* Retur|n the su|
|00001070| 62 73 74 72 69 6e 67 20 | 6f 66 20 74 68 65 20 67 |bstring |of the g|
|00001080| 69 76 65 6e 20 6c 65 6e | 67 74 68 20 73 74 61 72 |iven len|gth star|
|00001090| 74 69 6e 67 20 66 72 6f | 6d 20 74 68 65 20 67 69 |ting fro|m the gi|
|000010a0| 76 65 6e 20 6f 66 66 73 | 65 74 2e 20 20 54 68 65 |ven offs|et. The|
|000010b0| 20 6e 75 6c 6c 09 2a 2f | 0d 2f 2a 20 73 74 72 69 | null.*/|./* stri|
|000010c0| 6e 67 20 69 73 20 72 65 | 74 75 72 6e 65 64 20 69 |ng is re|turned i|
|000010d0| 66 20 74 68 65 20 6f 66 | 66 73 65 74 20 69 73 20 |f the of|fset is |
|000010e0| 6f 75 74 20 6f 66 20 62 | 6f 75 6e 64 73 2e 20 20 |out of b|ounds. |
|000010f0| 54 68 65 20 53 74 72 69 | 6e 67 20 72 65 74 75 72 |The Stri|ng retur|
|00001100| 6e 65 64 20 6d 61 79 20 | 62 65 09 2a 2f 0d 2f 2a |ned may |be.*/./*|
|00001110| 20 73 68 6f 72 74 65 72 | 20 74 68 61 6e 20 6c 65 | shorter| than le|
|00001120| 6e 67 74 68 20 63 68 61 | 72 61 63 74 65 72 73 20 |ngth cha|racters |
|00001130| 69 66 20 6f 66 66 73 65 | 74 2b 6c 65 6e 67 74 68 |if offse|t+length|
|00001140| 20 65 78 63 65 65 64 73 | 20 74 68 65 20 6c 65 6e | exceeds| the len|
|00001150| 67 74 68 20 6f 66 20 74 | 68 69 73 20 53 74 72 69 |gth of t|his Stri|
|00001160| 6e 67 2e 09 2a 2f 0d 2f | 2a d1 d1 d1 d1 d1 d1 d1 |ng..*/./|*.......|
|00001170| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001180| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001190| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000011a0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000011b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 2a |........|.......*|
|000011c0| 2f 0d 53 74 72 69 6e 67 | 20 53 74 72 69 6e 67 3a |/.String| String:|
|000011d0| 3a 73 75 62 73 74 72 28 | 69 6e 74 20 6f 66 66 73 |:substr(|int offs|
|000011e0| 65 74 2c 20 69 6e 74 20 | 6c 65 6e 67 74 68 29 20 |et, int |length) |
|000011f0| 63 6f 6e 73 74 0d 20 20 | 7b 0d 20 20 53 74 72 69 |const. |{. Stri|
|00001200| 6e 67 20 72 65 73 75 6c | 74 3b 20 2f 2f 44 65 66 |ng resul|t; //Def|
|00001210| 61 75 6c 74 73 20 74 6f | 20 6e 75 6c 6c 2e 0d 20 |aults to| null.. |
|00001220| 20 69 6e 74 20 74 68 69 | 73 4c 65 6e 67 74 68 3d | int thi|sLength=|
|00001230| 53 74 72 69 6e 67 3a 3a | 6c 65 6e 67 74 68 28 29 |String::|length()|
|00001240| 3b 0d 0d 20 20 69 66 20 | 28 6f 66 66 73 65 74 3e |;.. if |(offset>|
|00001250| 3d 30 20 26 26 20 6f 66 | 66 73 65 74 3c 74 68 69 |=0 && of|fset<thi|
|00001260| 73 4c 65 6e 67 74 68 29 | 0d 20 20 20 20 7b 0d 20 |sLength)|. {. |
|00001270| 20 20 20 69 66 20 28 6f | 66 66 73 65 74 2b 6c 65 | if (o|ffset+le|
|00001280| 6e 67 74 68 3e 3d 74 68 | 69 73 4c 65 6e 67 74 68 |ngth>=th|isLength|
|00001290| 29 20 6c 65 6e 67 74 68 | 3d 74 68 69 73 4c 65 6e |) length|=thisLen|
|000012a0| 67 74 68 2d 6f 66 66 73 | 65 74 3b 0d 20 20 20 20 |gth-offs|et;. |
|000012b0| 69 66 20 28 72 65 73 75 | 6c 74 2e 64 61 74 61 3d |if (resu|lt.data=|
|000012c0| 28 53 74 72 69 6e 67 44 | 61 74 61 20 2a 29 4e 65 |(StringD|ata *)Ne|
|000012d0| 77 48 61 6e 64 6c 65 28 | 6c 65 6e 67 74 68 2b 35 |wHandle(|length+5|
|000012e0| 29 29 0d 20 20 20 20 20 | 20 7b 0d 20 20 20 20 20 |)). | {. |
|000012f0| 20 72 65 73 75 6c 74 2e | 64 61 74 61 2d 3e 72 65 | result.|data->re|
|00001300| 66 43 6f 75 6e 74 3d 31 | 3b 0d 20 20 20 20 20 20 |fCount=1|;. |
|00001310| 42 6c 6f 63 6b 4d 6f 76 | 65 28 64 61 74 61 2d 3e |BlockMov|e(data->|
|00001320| 73 74 72 2b 6f 66 66 73 | 65 74 2c 72 65 73 75 6c |str+offs|et,resul|
|00001330| 74 2e 64 61 74 61 2d 3e | 73 74 72 2c 6c 65 6e 67 |t.data->|str,leng|
|00001340| 74 68 29 3b 0d 20 20 20 | 20 20 20 72 65 73 75 6c |th);. | resul|
|00001350| 74 2e 64 61 74 61 2d 3e | 73 74 72 5b 6c 65 6e 67 |t.data->|str[leng|
|00001360| 74 68 5d 3d 27 5c 30 27 | 3b 0d 20 20 20 20 20 20 |th]='\0'|;. |
|00001370| 7d 0d 20 20 20 20 7d 0d | 20 20 72 65 74 75 72 6e |}. }.| return|
|00001380| 20 72 65 73 75 6c 74 3b | 0d 20 20 7d 0d 0d 0d 2f | result;|. }.../|
|00001390| 2a d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |*.......|........|
|000013a0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000013b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000013c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000013d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000013e0| d1 d1 d1 d1 d1 d1 d1 2a | 2f 0d 2f 2a 20 52 65 74 |.......*|/./* Ret|
|000013f0| 75 72 6e 20 74 68 65 20 | 63 6f 6e 74 65 6e 74 73 |urn the |contents|
|00001400| 20 6f 66 20 74 68 69 73 | 20 53 74 72 69 6e 67 20 | of this| String |
|00001410| 61 73 20 61 20 43 20 73 | 74 72 69 6e 67 2e 20 20 |as a C s|tring. |
|00001420| 54 68 65 20 72 65 73 75 | 6c 74 20 6d 61 79 20 6d |The resu|lt may m|
|00001430| 6f 76 65 20 74 68 65 20 | 6e 65 78 74 20 74 69 6d |ove the |next tim|
|00001440| 65 09 2a 2f 0d 2f 2a 20 | 6d 65 6d 6f 72 79 20 69 |e.*/./* |memory i|
|00001450| 73 20 61 6c 6c 6f 63 61 | 74 65 64 21 09 09 09 09 |s alloca|ted!....|
|00001460| 09 09 09 09 09 2a 2f 0d | 2f 2a d1 d1 d1 d1 d1 d1 |.....*/.|/*......|
|00001470| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001480| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001490| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000014a0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000014b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000014c0| 2a 2f 0d 63 68 61 72 20 | 2a 53 74 72 69 6e 67 3a |*/.char |*String:|
|000014d0| 3a 63 53 74 72 69 6e 67 | 28 29 20 63 6f 6e 73 74 |:cString|() const|
|000014e0| 0d 20 20 7b 0d 20 20 69 | 66 20 28 21 64 61 74 61 |. {. i|f (!data|
|000014f0| 29 20 72 65 74 75 72 6e | 20 22 22 3b 0d 20 20 72 |) return| "";. r|
|00001500| 65 74 75 72 6e 20 64 61 | 74 61 2d 3e 73 74 72 3b |eturn da|ta->str;|
|00001510| 0d 20 20 7d 0d 0d 0d 2f | 2a d1 d1 d1 d1 d1 d1 d1 |. }.../|*.......|
|00001520| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001530| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001540| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001550| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001560| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 2a |........|.......*|
|00001570| 2f 0d 2f 2a 20 52 65 74 | 75 72 6e 20 74 72 75 65 |/./* Ret|urn true|
|00001580| 20 69 66 20 74 68 65 20 | 53 74 72 69 6e 67 73 20 | if the |Strings |
|00001590| 61 72 65 20 65 78 61 63 | 74 6c 79 20 65 71 75 61 |are exac|tly equa|
|000015a0| 6c 2e 09 09 09 09 09 2a | 2f 0d 2f 2a d1 d1 d1 d1 |l......*|/./*....|
|000015b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000015c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000015d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000015e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000015f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001600| d1 d1 2a 2f 0d 62 6f 6f | 6c 20 53 74 72 69 6e 67 |..*/.boo|l String|
|00001610| 3a 3a 6f 70 65 72 61 74 | 6f 72 3d 3d 28 63 6f 6e |::operat|or==(con|
|00001620| 73 74 20 53 74 72 69 6e | 67 20 26 73 72 63 32 29 |st Strin|g &src2)|
|00001630| 20 63 6f 6e 73 74 0d 20 | 20 7b 0d 20 20 69 66 20 | const. | {. if |
|00001640| 28 21 64 61 74 61 20 7c | 7c 20 21 73 72 63 32 2e |(!data ||| !src2.|
|00001650| 64 61 74 61 29 0d 20 20 | 20 20 72 65 74 75 72 6e |data). | return|
|00001660| 20 6c 65 6e 67 74 68 28 | 29 3d 3d 73 72 63 32 2e | length(|)==src2.|
|00001670| 6c 65 6e 67 74 68 28 29 | 3b 0d 20 20 72 65 74 75 |length()|;. retu|
|00001680| 72 6e 20 21 73 74 72 63 | 6d 70 28 64 61 74 61 2d |rn !strc|mp(data-|
|00001690| 3e 73 74 72 2c 73 72 63 | 32 2e 64 61 74 61 2d 3e |>str,src|2.data->|
|000016a0| 73 74 72 29 3b 0d 20 20 | 7d 0d 0d 0d 2f 2a d1 d1 |str);. |}.../*..|
|000016b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000016c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000016d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000016e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000016f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001700| d1 d1 d1 d1 2a 2f 0d 2f | 2a 20 43 6f 6e 63 61 74 |....*/./|* Concat|
|00001710| 65 6e 61 74 65 20 74 68 | 69 73 20 61 6e 64 20 73 |enate th|is and s|
|00001720| 72 63 20 74 6f 20 79 69 | 65 6c 64 20 61 20 6e 65 |rc to yi|eld a ne|
|00001730| 77 20 53 74 72 69 6e 67 | 2e 09 09 09 09 09 2a 2f |w String|......*/|
|00001740| 0d 2f 2a d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |./*.....|........|
|00001750| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001760| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001770| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001780| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001790| d1 d1 d1 d1 d1 d1 d1 d1 | d1 2a 2f 0d 53 74 72 69 |........|.*/.Stri|
|000017a0| 6e 67 20 53 74 72 69 6e | 67 3a 3a 6f 70 65 72 61 |ng Strin|g::opera|
|000017b0| 74 6f 72 7c 28 63 6f 6e | 73 74 20 53 74 72 69 6e |tor|(con|st Strin|
|000017c0| 67 20 26 73 72 63 29 20 | 63 6f 6e 73 74 0d 20 20 |g &src) |const. |
|000017d0| 7b 0d 20 20 53 74 72 69 | 6e 67 20 72 65 73 75 6c |{. Stri|ng resul|
|000017e0| 74 3d 2a 74 68 69 73 3b | 0d 20 20 72 65 73 75 6c |t=*this;|. resul|
|000017f0| 74 7c 3d 73 72 63 3b 0d | 20 20 72 65 74 75 72 6e |t|=src;.| return|
|00001800| 20 72 65 73 75 6c 74 3b | 0d 20 20 7d 0d 0d 0d 2f | result;|. }.../|
|00001810| 2a d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |*.......|........|
|00001820| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001830| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001840| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001850| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001860| d1 d1 d1 d1 d1 d1 d1 2a | 2f 0d 2f 2a 20 44 65 73 |.......*|/./* Des|
|00001870| 74 72 75 63 74 69 76 65 | 6c 79 20 63 6f 6e 63 61 |tructive|ly conca|
|00001880| 74 65 6e 61 74 65 20 73 | 72 63 20 74 6f 20 74 68 |tenate s|rc to th|
|00001890| 65 20 65 6e 64 20 6f 66 | 20 74 68 69 73 2e 09 09 |e end of| this...|
|000018a0| 09 09 09 2a 2f 0d 2f 2a | d1 d1 d1 d1 d1 d1 d1 d1 |...*/./*|........|
|000018b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000018c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000018d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000018e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000018f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 2a 2f |........|......*/|
|00001900| 0d 4f 53 45 72 72 20 53 | 74 72 69 6e 67 3a 3a 6f |.OSErr S|tring::o|
|00001910| 70 65 72 61 74 6f 72 7c | 3d 28 63 6f 6e 73 74 20 |perator||=(const |
|00001920| 53 74 72 69 6e 67 20 26 | 73 72 63 29 0d 20 20 7b |String &|src). {|
|00001930| 0d 20 20 4f 53 45 72 72 | 20 65 72 72 3b 0d 0d 20 |. OSErr| err;.. |
|00001940| 20 69 6e 74 20 73 72 63 | 4c 65 6e 67 74 68 3d 73 | int src|Length=s|
|00001950| 72 63 2e 6c 65 6e 67 74 | 68 28 29 3b 0d 20 20 69 |rc.lengt|h();. i|
|00001960| 66 20 28 21 73 72 63 4c | 65 6e 67 74 68 29 20 72 |f (!srcL|ength) r|
|00001970| 65 74 75 72 6e 20 30 3b | 20 2f 2f 20 4e 6f 74 68 |eturn 0;| // Noth|
|00001980| 69 6e 67 20 74 6f 20 63 | 6f 6e 63 61 74 65 6e 61 |ing to c|oncatena|
|00001990| 74 65 3f 0d 20 20 69 66 | 20 28 21 64 61 74 61 29 |te?. if| (!data)|
|000019a0| 0d 20 20 20 20 7b 0d 20 | 20 20 20 69 6e 74 65 72 |. {. | inter|
|000019b0| 6e 61 6c 43 6f 70 79 28 | 73 72 63 29 3b 0d 20 20 |nalCopy(|src);. |
|000019c0| 20 20 72 65 74 75 72 6e | 20 30 3b 0d 20 20 20 20 | return| 0;. |
|000019d0| 7d 0d 20 20 69 66 20 28 | 65 72 72 3d 66 72 65 73 |}. if (|err=fres|
|000019e0| 68 28 29 29 20 72 65 74 | 75 72 6e 20 65 72 72 3b |h()) ret|urn err;|
|000019f0| 0d 20 20 53 65 74 48 61 | 6e 64 6c 65 53 69 7a 65 |. SetHa|ndleSize|
|00001a00| 28 48 61 6e 64 6c 65 28 | 64 61 74 61 29 2c 47 65 |(Handle(|data),Ge|
|00001a10| 74 48 61 6e 64 6c 65 53 | 69 7a 65 28 48 61 6e 64 |tHandleS|ize(Hand|
|00001a20| 6c 65 28 64 61 74 61 29 | 29 2b 73 72 63 4c 65 6e |le(data)|)+srcLen|
|00001a30| 67 74 68 29 3b 0d 20 20 | 69 66 20 28 65 72 72 3d |gth);. |if (err=|
|00001a40| 4d 65 6d 45 72 72 6f 72 | 28 29 29 20 72 65 74 75 |MemError|()) retu|
|00001a50| 72 6e 20 53 74 72 69 6e | 67 3a 3a 65 72 72 3d 65 |rn Strin|g::err=e|
|00001a60| 72 72 3b 0d 20 20 73 74 | 72 63 61 74 28 64 61 74 |rr;. st|rcat(dat|
|00001a70| 61 2d 3e 73 74 72 2c 73 | 72 63 2e 64 61 74 61 2d |a->str,s|rc.data-|
|00001a80| 3e 73 74 72 29 3b 0d 20 | 20 72 65 74 75 72 6e 20 |>str);. | return |
|00001a90| 30 3b 0d 20 20 7d 0d 0d | 0d 2f 2a d1 d1 d1 d1 d1 |0;. }..|./*.....|
|00001aa0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ab0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ac0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ad0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ae0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001af0| d1 2a 2f 0d 2f 2a 20 44 | 65 73 74 72 75 63 74 69 |.*/./* D|estructi|
|00001b00| 76 65 6c 79 20 63 6f 6e | 63 61 74 65 6e 61 74 65 |vely con|catenate|
|00001b10| 20 63 68 20 74 6f 20 74 | 68 65 20 65 6e 64 20 6f | ch to t|he end o|
|00001b20| 66 20 74 68 69 73 2e 09 | 09 09 09 09 2a 2f 0d 2f |f this..|....*/./|
|00001b30| 2a d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |*.......|........|
|00001b40| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001b50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001b60| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001b70| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001b80| d1 d1 d1 d1 d1 d1 d1 2a | 2f 0d 4f 53 45 72 72 20 |.......*|/.OSErr |
|00001b90| 53 74 72 69 6e 67 3a 3a | 6f 70 65 72 61 74 6f 72 |String::|operator|
|00001ba0| 7c 3d 28 63 68 61 72 20 | 63 68 29 0d 20 20 7b 0d ||=(char |ch). {.|
|00001bb0| 20 20 63 68 61 72 20 63 | 53 74 72 69 6e 67 5b 32 | char c|String[2|
|00001bc0| 5d 3b 0d 0d 20 20 63 53 | 74 72 69 6e 67 5b 30 5d |];.. cS|tring[0]|
|00001bd0| 3d 63 68 3b 0d 20 20 63 | 53 74 72 69 6e 67 5b 31 |=ch;. c|String[1|
|00001be0| 5d 3d 27 5c 30 27 3b 0d | 20 20 72 65 74 75 72 6e |]='\0';.| return|
|00001bf0| 20 2a 74 68 69 73 7c 3d | 63 53 74 72 69 6e 67 3b | *this|=|cString;|
|00001c00| 0d 20 20 7d 0d 0d 0d 2f | 2a d1 d1 d1 d1 d1 d1 d1 |. }.../|*.......|
|00001c10| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001c20| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001c30| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001c40| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001c50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 2a |........|.......*|
|00001c60| 2f 0d 2f 2a 20 44 65 73 | 74 72 75 63 74 69 76 65 |/./* Des|tructive|
|00001c70| 6c 79 20 63 6f 6e 63 61 | 74 65 6e 61 74 65 20 63 |ly conca|tenate c|
|00001c80| 53 74 72 69 6e 67 20 74 | 6f 20 74 68 65 20 65 6e |String t|o the en|
|00001c90| 64 20 6f 66 20 74 68 69 | 73 2e 09 09 09 09 2a 2f |d of thi|s.....*/|
|00001ca0| 0d 2f 2a d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |./*.....|........|
|00001cb0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001cc0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001cd0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ce0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001cf0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 2a 2f 0d 4f 53 45 72 |........|.*/.OSEr|
|00001d00| 72 20 53 74 72 69 6e 67 | 3a 3a 6f 70 65 72 61 74 |r String|::operat|
|00001d10| 6f 72 7c 3d 28 63 68 61 | 72 20 2a 63 53 74 72 69 |or|=(cha|r *cStri|
|00001d20| 6e 67 29 0d 20 20 7b 0d | 20 20 4f 53 45 72 72 20 |ng). {.| OSErr |
|00001d30| 65 72 72 3b 0d 0d 20 20 | 69 6e 74 20 73 72 63 4c |err;.. |int srcL|
|00001d40| 65 6e 67 74 68 3d 73 74 | 72 6c 65 6e 28 63 53 74 |ength=st|rlen(cSt|
|00001d50| 72 69 6e 67 29 3b 0d 20 | 20 69 66 20 28 21 73 72 |ring);. | if (!sr|
|00001d60| 63 4c 65 6e 67 74 68 29 | 20 72 65 74 75 72 6e 20 |cLength)| return |
|00001d70| 30 3b 20 2f 2f 20 4e 6f | 74 68 69 6e 67 20 74 6f |0; // No|thing to|
|00001d80| 20 63 6f 6e 63 61 74 65 | 6e 61 74 65 3f 0d 20 20 | concate|nate?. |
|00001d90| 69 66 20 28 21 64 61 74 | 61 29 0d 20 20 20 20 7b |if (!dat|a). {|
|00001da0| 0d 20 20 20 20 69 6e 74 | 65 72 6e 61 6c 43 6f 70 |. int|ernalCop|
|00001db0| 79 28 63 53 74 72 69 6e | 67 29 3b 0d 20 20 20 20 |y(cStrin|g);. |
|00001dc0| 72 65 74 75 72 6e 20 30 | 3b 0d 20 20 20 20 7d 0d |return 0|;. }.|
|00001dd0| 20 20 69 66 20 28 65 72 | 72 3d 66 72 65 73 68 28 | if (er|r=fresh(|
|00001de0| 29 29 20 72 65 74 75 72 | 6e 20 65 72 72 3b 0d 20 |)) retur|n err;. |
|00001df0| 20 53 65 74 48 61 6e 64 | 6c 65 53 69 7a 65 28 48 | SetHand|leSize(H|
|00001e00| 61 6e 64 6c 65 28 64 61 | 74 61 29 2c 47 65 74 48 |andle(da|ta),GetH|
|00001e10| 61 6e 64 6c 65 53 69 7a | 65 28 48 61 6e 64 6c 65 |andleSiz|e(Handle|
|00001e20| 28 64 61 74 61 29 29 2b | 73 72 63 4c 65 6e 67 74 |(data))+|srcLengt|
|00001e30| 68 29 3b 0d 20 20 69 66 | 20 28 65 72 72 3d 4d 65 |h);. if| (err=Me|
|00001e40| 6d 45 72 72 6f 72 28 29 | 29 20 72 65 74 75 72 6e |mError()|) return|
|00001e50| 20 53 74 72 69 6e 67 3a | 3a 65 72 72 3d 65 72 72 | String:|:err=err|
|00001e60| 3b 0d 20 20 73 74 72 63 | 61 74 28 64 61 74 61 2d |;. strc|at(data-|
|00001e70| 3e 73 74 72 2c 63 53 74 | 72 69 6e 67 29 3b 0d 20 |>str,cSt|ring);. |
|00001e80| 20 72 65 74 75 72 6e 20 | 30 3b 0d 20 20 7d 0d 0d | return |0;. }..|
|00001e90| 0d 2f 2a d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |./*.....|........|
|00001ea0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001eb0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ec0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ed0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001ee0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 2a 2f 0d 2f 2a 20 44 |........|.*/./* D|
|00001ef0| 65 73 74 72 75 63 74 69 | 76 65 6c 79 20 63 6f 6e |estructi|vely con|
|00001f00| 63 61 74 65 6e 61 74 65 | 20 63 68 20 74 6f 20 74 |catenate| ch to t|
|00001f10| 68 65 20 62 65 67 69 6e | 6e 69 6e 67 20 6f 66 20 |he begin|ning of |
|00001f20| 74 68 69 73 2e 09 09 09 | 09 2a 2f 0d 2f 2a d1 d1 |this....|.*/./*..|
|00001f30| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001f40| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001f50| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001f60| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001f70| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00001f80| d1 d1 d1 d1 2a 2f 0d 4f | 53 45 72 72 20 53 74 72 |....*/.O|SErr Str|
|00001f90| 69 6e 67 3a 3a 6f 70 65 | 72 61 74 6f 72 5e 3d 28 |ing::ope|rator^=(|
|00001fa0| 63 68 61 72 20 63 68 29 | 0d 20 20 7b 0d 20 20 63 |char ch)|. {. c|
|00001fb0| 68 61 72 20 63 53 74 72 | 69 6e 67 5b 32 5d 3b 0d |har cStr|ing[2];.|
|00001fc0| 0d 20 20 63 53 74 72 69 | 6e 67 5b 30 5d 3d 63 68 |. cStri|ng[0]=ch|
|00001fd0| 3b 0d 20 20 63 53 74 72 | 69 6e 67 5b 31 5d 3d 27 |;. cStr|ing[1]='|
|00001fe0| 5c 30 27 3b 0d 20 20 72 | 65 74 75 72 6e 20 2a 74 |\0';. r|eturn *t|
|00001ff0| 68 69 73 5e 3d 63 53 74 | 72 69 6e 67 3b 0d 20 20 |his^=cSt|ring;. |
|00002000| 7d 0d 0d 0d 2f 2a d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |}.../*..|........|
|00002010| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00002020| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00002030| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00002040| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|00002050| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 2a 2f 0d 2f |........|....*/./|
|00002060| 2a 20 44 65 73 74 72 75 | 63 74 69 76 65 6c 79 20 |* Destru|ctively |
|00002070| 63 6f 6e 63 61 74 65 6e | 61 74 65 20 63 53 74 72 |concaten|ate cStr|
|00002080| 69 6e 67 20 74 6f 20 74 | 68 65 20 62 65 67 69 6e |ing to t|he begin|
|00002090| 6e 69 6e 67 20 6f 66 20 | 74 68 69 73 2e 09 09 09 |ning of |this....|
|000020a0| 09 2a 2f 0d 2f 2a d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |.*/./*..|........|
|000020b0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000020c0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000020d0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000020e0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 d1 d1 d1 d1 |........|........|
|000020f0| d1 d1 d1 d1 d1 d1 d1 d1 | d1 d1 d1 d1 2a 2f 0d 4f |........|....*/.O|
|00002100| 53 45 72 72 20 53 74 72 | 69 6e 67 3a 3a 6f 70 65 |SErr Str|ing::ope|
|00002110| 72 61 74 6f 72 5e 3d 28 | 63 68 61 72 20 2a 63 53 |rator^=(|char *cS|
|00002120| 74 72 69 6e 67 29 0d 20 | 20 7b 0d 20 20 4f 53 45 |tring). | {. OSE|
|00002130| 72 72 20 65 72 72 3b 0d | 0d 20 20 69 6e 74 20 73 |rr err;.|. int s|
|00002140| 72 63 4c 65 6e 67 74 68 | 3d 73 74 72 6c 65 6e 28 |rcLength|=strlen(|
|00002150| 63 53 74 72 69 6e 67 29 | 3b 0d 20 20 69 66 20 28 |cString)|;. if (|
|00002160| 21 73 72 63 4c 65 6e 67 | 74 68 29 20 72 65 74 75 |!srcLeng|th) retu|
|00002170| 72 6e 20 30 3b 20 2f 2f | 20 4e 6f 74 68 69 6e 67 |rn 0; //| Nothing|
|00002180| 20 74 6f 20 63 6f 6e 63 | 61 74 65 6e 61 74 65 3f | to conc|atenate?|
|00002190| 0d 20 20 69 66 20 28 21 | 64 61 74 61 29 0d 20 20 |. if (!|data). |
|000021a0| 20 20 7b 0d 20 20 20 20 | 69 6e 74 65 72 6e 61 6c | {. |internal|
|000021b0| 43 6f 70 79 28 63 53 74 | 72 69 6e 67 29 3b 0d 20 |Copy(cSt|ring);. |
|000021c0| 20 20 20 72 65 74 75 72 | 6e 20 30 3b 0d 20 20 20 | retur|n 0;. |
|000021d0| 20 7d 0d 20 20 69 66 20 | 28 65 72 72 3d 66 72 65 | }. if |(err=fre|
|000021e0| 73 68 28 29 29 20 72 65 | 74 75 72 6e 20 65 72 72 |sh()) re|turn err|
|000021f0| 3b 0d 20 20 53 69 7a 65 | 20 64 61 74 61 53 69 7a |;. Size| dataSiz|
|00002200| 65 3d 47 65 74 48 61 6e | 64 6c 65 53 69 7a 65 28 |e=GetHan|dleSize(|
|00002210| 48 61 6e 64 6c 65 28 64 | 61 74 61 29 29 3b 0d 20 |Handle(d|ata));. |
|00002220| 20 53 65 74 48 61 6e 64 | 6c 65 53 69 7a 65 28 48 | SetHand|leSize(H|
|00002230| 61 6e 64 6c 65 28 64 61 | 74 61 29 2c 64 61 74 61 |andle(da|ta),data|
|00002240| 53 69 7a 65 2b 73 72 63 | 4c 65 6e 67 74 68 29 3b |Size+src|Length);|
|00002250| 0d 20 20 69 66 20 28 65 | 72 72 3d 4d 65 6d 45 72 |. if (e|rr=MemEr|
|00002260| 72 6f 72 28 29 29 20 72 | 65 74 75 72 6e 20 53 74 |ror()) r|eturn St|
|00002270| 72 69 6e 67 3a 3a 65 72 | 72 3d 65 72 72 3b 0d 20 |ring::er|r=err;. |
|00002280| 20 42 6c 6f 63 6b 4d 6f | 76 65 28 64 61 74 61 2d | BlockMo|ve(data-|
|00002290| 3e 73 74 72 2c 64 61 74 | 61 2d 3e 73 74 72 2b 73 |>str,dat|a->str+s|
|000022a0| 72 63 4c 65 6e 67 74 68 | 2c 64 61 74 61 53 69 7a |rcLength|,dataSiz|
|000022b0| 65 2d 34 29 3b 0d 20 20 | 42 6c 6f 63 6b 4d 6f 76 |e-4);. |BlockMov|
|000022c0| 65 28 63 53 74 72 69 6e | 67 2c 64 61 74 61 2d 3e |e(cStrin|g,data->|
|000022d0| 73 74 72 2c 73 72 63 4c | 65 6e 67 74 68 29 3b 0d |str,srcL|ength);.|
|000022e0| 20 20 72 65 74 75 72 6e | 20 30 3b 0d 20 20 7d 0d | return| 0;. }.|
|000022f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002300| 00 00 01 00 00 00 01 3c | 00 00 00 3c 00 00 00 5a |.......<|...<...Z|
|00002310| 20 73 74 72 75 63 74 75 | 72 69 6e 67 20 61 62 69 | structu|ring abi|
|00002320| 6c 69 74 69 65 73 20 73 | 75 63 68 20 61 73 20 50 |lities s|uch as P|
|00002330| 09 48 53 74 72 69 6e 67 | 2e 63 02 00 00 00 54 45 |.HString|.c....TE|
|00002340| 58 54 51 45 44 31 01 00 | 00 00 00 00 00 00 00 00 |XTQED1..|........|
|00002350| 00 00 54 45 58 54 51 45 | 44 31 01 00 00 00 00 00 |..TEXTQE|D1......|
|00002360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002370| 00 00 a2 63 b4 fd 00 00 | 22 70 00 00 01 96 64 75 |...c....|"p....du|
|00002380| 72 65 73 20 61 6e 64 20 | 66 75 6e 63 74 69 6f 6e |res and |function|
|00002390| 73 2e 20 20 49 74 20 77 | 61 73 20 70 6f 73 73 69 |s. It w|as possi|
|000023a0| 1f 62 6c 65 20 74 6f 20 | 47 4f 53 55 42 20 74 6f |.ble to |GOSUB to|
|000023b0| 20 61 20 63 6f 6d 6d 6f | 6e 20 70 69 65 63 65 20 | a commo|n piece |
|000023c0| 6f 66 20 63 6f 64 65 2c | 20 62 75 74 20 74 68 69 |of code,| but thi|
|000023d0| 73 20 77 61 73 20 6d 6f | 72 65 20 6f 66 20 61 20 |s was mo|re of a |
|000023e0| 6d 61 63 72 6f 20 74 68 | 61 6e 20 61 20 70 72 6f |macro th|an a pro|
|000023f0| 63 65 1f 64 75 72 65 d1 | 74 68 65 72 65 20 77 65 |ce.dure.|there we|
|00002400| 00 00 00 2a 00 09 09 53 | 6d 61 6c 6c 45 64 69 74 |...*...S|mallEdit|
|00002410| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002420| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002430| 00 04 00 05 00 08 00 00 | 00 02 00 00 00 00 01 00 |........|........|
|00002440| 00 00 01 3c 00 00 00 3c | 00 00 00 5a 00 40 70 40 |...<...<|...Z.@p@|
|00002450| 05 26 00 00 00 1c 00 5a | 00 02 45 46 4e 54 00 00 |.&.....Z|..EFNT..|
|00002460| 00 1a 45 54 41 42 00 00 | 00 26 45 51 45 44 00 00 |..ETAB..|.&EQED..|
|00002470| 00 32 03 eb ff ff 00 00 | 00 00 00 00 00 00 03 ec |.2......|........|
|00002480| ff ff 00 00 00 2e 00 00 | 00 00 03 eb ff ff 00 00 |........|........|
|00002490| 00 36 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.6......|........|
|000024a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000024b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000024c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000024d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000024e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000024f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+